package com.hc.satoken.controller;

import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.hc.satoken.dto.UserLoginDto;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {

    // 测试登录，浏览器访问： http://localhost:8081/user/doLogin?username=zhang&password=123456
    @RequestMapping("/doLogin")
    public SaResult doLogin(@RequestBody() UserLoginDto userLoginDto) {
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        System.out.println(userLoginDto.getUsername());
        //数据库查询根据用户名查询用户id
        StpUtil.login(10001);
        return SaResult.data(StpUtil.getTokenInfo());
    }

    // 查询登录状态，浏览器访问： http://localhost:8081/user/isLogin
    @RequestMapping("/isLogin")
    public String isLogin() {
        Object loginId = StpUtil.getLoginId();
        // 获取当前会话的 token 值
        SaTokenInfo tokenInfo = StpUtil.getTokenInfo();
        return "当前会话是否登录：" + StpUtil.isLogin()+"登录id: "+loginId+"登录token: "+tokenInfo;
    }

    // 查询 Token 信息  ---- http://localhost:8081/acc/tokenInfo
    @RequestMapping("tokenInfo")
    public SaResult tokenInfo() {
        return SaResult.data(StpUtil.getTokenInfo());
    }

    // 测试注销  ---- http://localhost:8081/acc/logout
    @RequestMapping("logout")
    public SaResult logout() {
        StpUtil.logout();
        return SaResult.ok();
    }

}

